form_lq Interface

public interface form_lq

Module Procedures

private subroutine form_lq_no_pivot(l, tau, q, work, olwork, err)

Forms the orthogonal matrix from the elementary reflectors returned by the LQ factorization algorithm.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(inout), dimension(:,:) :: l

On input, an M-by-N matrix where the elements above the diagonal contain the elementary reflectors generated from the LQ factorization performed by lq_factor. On and below the diagonal the matrix contains the matrix . On output, the elements above the diagonal are zeroed sucht hat the remaining matrix is the M-by-N lower trapezoidal matrix where only the M-by-M submatrix is the lower triangular matrix . Notice, M must be less than or equal to N for this routine.

real(kind=real64), intent(in), dimension(:) :: tau

A MIN(M, N)-element array containing the scalar factors of each elementary reflector defined in .

real(kind=real64), intent(out), dimension(:,:) :: q

An N-by-N matrix where the orthogonal matrix will be written.

real(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine form_lq_no_pivot_cmplx(l, tau, q, work, olwork, err)

Forms the orthogonal matrix from the elementary reflectors returned by the LQ factorization algorithm.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(inout), dimension(:,:) :: l

On input, an M-by-N matrix where the elements above the diagonal contain the elementary reflectors generated from the LQ factorization performed by lq_factor. On and below the diagonal the matrix contains the matrix . On output, the elements above the diagonal are zeroed sucht hat the remaining matrix is the M-by-N lower trapezoidal matrix where only the M-by-M submatrix is the lower triangular matrix . Notice, M must be less than or equal to N for this routine.

complex(kind=real64), intent(in), dimension(:) :: tau

A MIN(M, N)-element array containing the scalar factors of each elementary reflector defined in .

complex(kind=real64), intent(out), dimension(:,:) :: q

An N-by-N matrix where the orthogonal matrix will be written.

complex(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.